# # # # # # item_one=3
# # # # # # item_two=2
# # # # # # item_three=9
# # # # # # total=item_one +\
# # # item_two +\
# # #  item_three
# # #  print(total)
# # #  word ='word'
# # # sentence="这是一个句子。"
# # # # # # paragraph="这是一个段落。"
# # # # # # print(sentence)
# # # # # # print(paragraph)
# # # # # # print(word)
# # # # # print("hello world")
# # # # # print("hello world")
# # # # # print("hello world")
# # # # x="a"
# # # # y="b"
# # # # #换行输出
# # # # print (x)
# # # # print (y)
# # # # print('--------')
# # # # #不换行输出
# # # # print (x,end='')
# # # # print (y,end='')
# # # # #不换行输出
# # # # print (x+y,end='')
# # # # import sys; x="rko";sys.stdout.write(x+'\n')
# # # import expression
# # # import suite
# # # if expression:
# # #     suite
# # # elif expression == "hello":
# # #     suite
# # # else:
# # #     suite
# # #str ='Hello ?World!'
# # # print (str)
# # # #输出完整字符串
# # # print (str[9])
# # # #输出字符串中的第一个字符
# # # print (str[2:5])
# # # #输出字符串中第三个至第六个之间的字符串
# # # print (str[2:])
# # # #输出从第三个字符开始的字符串
# # # print (str * 2)
# #  #输出字符串两次
# #  print(str + "n屁")
# # 输出连接的字符串
# #  a,b,c=1,3,"ko"
# #  print(a,end=' ')
# #  print(b,end=' ')
# # print(c)
# # list =['ruioob',786,2.23,'john',70.2 ]
# # tinylist=[123,'john']
# # print(list)
# # #输出完整列表
# # print (list[0][2:5])
# # #输出列表的第一个元素
# # print (list[1:3])
# # #输出第二个至第三个元素
# # print (list[2:])
# # #输出从第三个开始至列表末尾的所有元素
# # print (tinylist *2)
# # #输出列表两次
# # print (list + tinylist)
# # # #打印组合的列表
# # tuple =('runoob',786,2.23,'john',70.2)
# # list =['runoob',786,2.23,'john',70.2]
# # list[2]=1000
# # print(tuple)
# # print(list)
# dict ={}
# dict['one']="This is one"
# dict[2]="This is two"
# tinydict ={'name':'runoob','code':6734,'dept':'sales'}
# print (dict['one'])
# #输出键为'one'的值
# print (dict[2])
# #输出键为2的值
# print (tinydict)
# # 输出完整的字典
# print (list(tinydict.keys()))
# #输出所有键
# print (list(tinydict.values()))
# #输出所有值
# print(', '.join(str(x) for x in tinydict.values()))
#
# import random
#
# # 生成1-100之间的随机整数
# secret_number = random.randint(1, 100)
# guess_count = 0
#
# while True:
#     guess_count += 1
#     # 处理用户输入（增加异常处理，避免输入非数字导致崩溃）
#     try:
#         guess = int(input("请输入你猜测的数字（1-100）："))
#     except ValueError:
#         print("请输入有效的整数！")
#         continue  # 跳过本次循环，重新输入
#
#     if guess == secret_number:
#         print(f"恭喜你猜对了！你一共猜了{guess_count}次")
#         break
#     elif guess < secret_number:  # 猜小了，提示“大一点”
#         print("大一点")
#     else:  # 猜大了，提示“小一点”
#         print("小一点")
#
#     if guess_count >= 7:  # 超过7次（含第7次）结束游戏
#         print(f"次数用完了！正确答案是{secret_number}")
#         break
# def find_primes_under_100():
#     primes = []
#     for num in range(2, 101):
#         is_prime = True
#         for i in range(2, int(num ** 0.5) + 1):
#             if num % i == 0:
#                 is_prime = False
#                 break
#         if is_prime:
#             primes.append(num)
#     print("100以内的质数有：", primes)
#
# find_primes_under_100()
# class Teacher:
#     def __init__(self, name, age, number, subject) -> None:
#         self.name = name  # 姓名
#         self.age = age    # 年龄
#         self.number = number  # 编号
#         self.subject = subject  # 教授科目
#
#     def teach(self):
#         # 输出教学信息（使用self调用实例属性）
#         print(f'{self.name}正在教授{self.subject}')
#
#
# class Student:
#     def __init__(self, name, age, number, class_num) -> None:
#         self.name = name    # 姓名
#         self.age = age      # 年龄
#         self.number = number  # 学号
#         self.class_num = class_num  # 班级
#
#     def study(self):
#         # 这里之前漏了self.，已修正
#         print(f'{self.name}正在学习（{self.class_num}）的课程')
#
#
# # 测试代码
# if __name__ == '__main__':
#     # 创建老师实例并调用教学方法
#     math_teacher = Teacher("李老师", 38, "T002", "高中物理")
#     math_teacher.teach()
#
#     # 创建学生实例并调用学习方法
#     student_1 = Student("小红", 16, "S005", "高二（3）班")
#     student_1.study()
#     student = Student("小明", 15, "S001", "高一（1）班")
#     student.study()
from turtle import pd

# import pandas as pd
# import matplotlib.pyplot as plt
#
# plt.rcParams['font.sans-serif'].insert(0, 'SimHei')
# plt.rcParams['axes.unicode_minus'] = False
# df3 = pd.read_csv(
#     'data/2023年北京积分落户数据.csv',
#     encoding='utf-8',
#     sep='\t',
#     index_col='公示编号',
#     usecols=['公示编号', '姓名', '积分分值']
#     nrows=10,
#     skiprows=np.arange(1, 21),
#     true_values=['是', 'Y', 'yes', 'Yes'],
#     false_values=['否', 'N', 'no', 'No'],
#     na_values=['----', 'N/A'],
# )
# df3
#
# 从Excel文件中加载数据创建DataFrame
# def3.head(3)
# df4 = pd.read_excel(
#     'data/2022年股票数据.xlsx',
#     sheet_name='JD',  # 加载的工作表的名字
#     usecols=['date', 'open', 'Close'],
#     index_col='Date'
# )
# df4.h
import pandas as pd

# 创建一个Series对象，指定名称为'A'，值分别为1，2，3，4
# 默认索引为0，1，2，3

# # 显示Series对象
# print(series)
#
# # 如果你想要显式地设置索引，可以这样做：
# custom_index = [1, 2, 3, 4]  # 自定义索引
# series_with_index = pd.Series([1, 2, 3, 4], index=custom_index, name='A')
#
# # 显示带有自定义索引的series对象
# print(series_with_index)
# 创建一个简单的DataFrame

import pandas as pd

# # 创建一个简单的 DataFrame
# df = pd.DataFrame({
#     'Name': ['Alice', 'Bob', 'Charlie'],
#     'Age': [25, 30, 35],
#     'City': ['New York', 'Los Angeles', 'Chicago']
# })
#
# # 将 DataFrame 写入 Excel 文件，写入 'Sheet1' 表单
# df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
#
# # 写入多个表单，使用 ExcelWriter
# with pd.ExcelWriter('output.xlsx') as writer:
#     df.to_excel(writer, sheet_name='Sheet1', index=False)
# df.to_excel(writer, sheet_name='Sheet2', index=False)
# import pandas as pd
import pandas as pd
import pandas as pd
import pandas as pd

# 读取 CSV 文件到 DataFrame
import pandas as pd

# import pandas as pd
# df = pd.read_csv('C:/Users/小 坤/PycharmProjects/pythonProject2/property-data.csv')
# x = df["ST_NUM"].mean()
# df["ST_NUM"].fillna(x, inplace = True)
# print(df.to_string())

# import pandas as pd
#
# person = {
#     "name": ['Google', 'Runoob', 'Taobao'],
#     "age": [50, 200, 12345]
# }
#
# df = pd.DataFrame(person)
#
# for x in df.index:
#     if df.loc[x, "age"] > 120:
#         df.loc[x, "age"] = 120
#
# print(df.to_string())
# import pandas as pd
#
# persons = {
#     "name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
#     "age": [50, 40, 40, 23]
# }
#
# df = pd.DataFrame(persons)
# df.drop_duplicates(inplace = True)
# print(df)
# 接口调用
# 获取天气数据
# https://uapis.cn/docs/api-reference/get-misc-weather

# import requests
# base_url="http://uapis.cn/api/v1/misc/phoneinfo"
# url=base_url+"?phone=15982518391"
# resp=requests.get(url)
# print(resp.json())
# from openai import OpenAI
#
# client = hOpenAI(api_key="sk-vzcefqdliprgpvaqftmpgrnlttdlneujiehfitqxlirialtf", base_url="https://api.siliconflow.cn/v1")
#
# question = input("请输入您的问题：")
#
# response = client.chat.completions.create(
#     model="deepseek-ai/DeepSeek-V3",
#     messages=[
#         {"role": "system", "content": "你是一个神秘人"},
#         {"role": "user", "content": question}
#     ],
#     temperature=0.7,
#     max_tokens=1024,
#     stream=True
# )
# # 逐步接收并处理响应
# for chunk in response:
#     if not chunk.choices:
#         continue
#     if chunk.choices[0].delta.content:
#         print(chunk.choices[0].delta.content, end="", flush=True)
#     if chunk.choices[0].delta.reasoning_content:
#         print(chunk.choices[0].delta.reasoning_content, end="", flush=True)
# from http import HTTPStatus
# from urllib.parse import urlparse, unquote
# from pathlib import PurePosixPath
# import requests
# from dashscope import ImageSynthesis
# import os
#
# # 1. 图像生成提示词
# prompt = "一个玩滑板的红衣服黄头发的男生"  # 简化字符串格式，避免不必要的fr前缀
#
# # 2. 替换为有效的百炼API Key（关键修复）
# api_key = "你的有效API Key"  # 请从百炼平台获取并替换
#
# # 3. 确保保存图片的目录存在（新增目录检查，避免保存失败）
# save_dir = "./data/draw/"
# if not os.path.exists(save_dir):
#     os.makedirs(save_dir, exist_ok=True)  # 自动创建多级目录
#
# # 4. 调用图像生成API
# print('----同步调用，请等待任务执行----')
# try:
#     rsp = ImageSynthesis.call(
#         api_key=api_key,
#         model="qwen-image",
#         prompt=prompt,
#         n=1,
#         size='1328*1328',  # 图片尺寸
#         prompt_extend=True,  # 开启提示词拓展
#         watermark=True  # 添加水印
#     )
#
#     print('API响应结果: %s' % rsp)
#
#     # 5. 处理成功响应，保存图片
#     if rsp.status_code == HTTPStatus.OK:
#         for result in rsp.output.results:
#             # 解析图片URL中的文件名
#             file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
#             save_path = os.path.join(save_dir, file_name)  # 使用os.path处理路径，避免跨平台问题
#
#             # 下载并保存图片
#             with open(save_path, 'wb+') as f:
#                 f.write(requests.get(result.url).content)
#             print(f"图片已保存至: {save_path}")
#     else:
#         print(f'调用失败, 状态码: {rsp.status_code}, 错误信息: {rsp.message}')
#
# except Exception as e:
#     print(f"执行出错: {str(e)}")
#
# import matplotlib.pyplot as plt
# import numpy as np
# x = np.arange(0,4*np.pi,0.1)
# y = np.sin(x)
# z = np.cos(x)
# plt.plot(x,y,x,z)
# plt.show()

# import matplotlib.pyplot as plt
# import numpy as np
#
# ypoints = np.array([6, 2, 13, 10])
#
# plt.plot(ypoints, 'o:r', ms=10, mec='r')
# plt.show()
import matplotlib.pyplot as plt
import numpy as np

#plot 1:
# import matplotlib.pyplot as plt
# import numpy as np
# import pandas as pd
#
# # 获取对应工作表数据
# df = excel_file.parse('2020年销售数据')
#
# # 计算销售额，保留两位小数
# df['销售额'] = (df['售价'] * df['销售数量']).round(2)
#
# # 计算各品牌销售额
# brand_sales = df.groupby('品牌')['销售额'].sum()
#
# # 计算各销售渠道销售额
# channel_sales = df.groupby('销售渠道')['销售额'].sum()
#
# # 设置图片清晰度
# plt.rcParams['figure.dpi'] = 300
#
# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']
#
# # plot 1: 各品牌销售额折线图
# xpoints_1 = np.arange(len(brand_sales.index))
# ypoints_1 = brand_sales.values
#
# plt.subplot(1, 2, 1)
# plt.plot(xpoints_1, ypoints_1)
# plt.title("各品牌销售额")
# plt.xticks(xpoints_1, brand_sales.index, rotation=45)
#
# # plot 2: 各销售渠道销售额折线图
# xpoints_2 = np.arange(len(channel_sales.index))
# ypoints_2 = channel_sales.values
#
# plt.subplot(1, 2, 2)
# plt.plot(xpoints_2, ypoints_2)
# plt.title("各销售渠道销售额")
# plt.xticks(xpoints_2, channel_sales.index, rotation=45)
#
# plt.suptitle("销售数据相关折线图")
# plt.tight_layout()
# plt.show()
# import matplotlib.pyplot as plt
#
# # 设置中文字体支持（解决乱码问题）
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体显示中文
# plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示异常问题
#
# # 1. 准备数据
# labels = ['苹果', '香蕉', '橙子', '葡萄']  # 类别标签
# sizes = [35, 25, 20, 20]                  # 各部分大小
# explode = [0.1, 0, 0, 0]                  # 突出显示第一部分（苹果）
#
# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)
#
# # 3. 绘制饼图
# wedges, texts, autotexts = plt.pie(
#     sizes,
#     explode=explode,           # 突出显示设置
#     labels=labels,             # 类别标签
#     autopct='%1.1f%%',         # 显示百分比（保留1位小数）
#     shadow=True,               # 阴影效果
#     startangle=90,             # 起始角度（90度为从正上方开始）
#     colors=['red', 'yellow', 'orange', 'purple'],  # 自定义颜色
#     textprops={'fontsize': 12},  # 标签文字大小
#     pctdistance=0.85,          # 百分比文字距离圆心的距离（0-1）
#     wedgeprops={'edgecolor': 'white', 'linewidth': 2}  # 扇区边框
# )
#
# # 4. 美化文本
# plt.setp(autotexts, size=10, weight='bold', color='white')  # 百分比文字样式
# plt.title('水果销量占比', fontsize=15)  # 标题
#
# # 5. 保证饼图为正圆形
# plt.axis('equal')
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()
from matplotlib import pyplot as plt
# import matplotlib.pyplot as plt
#
# # 设置中文字体支持（解决乱码问题）
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体显示中文
# plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示异常问题
#
# # 1. 准备数据
# labels = ['优秀', '良好', '中等', '及格','不及格','缺考']  # 类别标签
# sizes = [15, 25,30,10,8,12]                  # 各部分大小
# explode = [0.1, 0, 0, 0,0,0]                  # 突出显示第一部分（苹果）
#
# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)
#
# # 3. 绘制饼图
# wedges, texts, autotexts = plt.pie(
#     sizes,
#     explode=explode,           # 突出显示设置
#     labels=labels,             # 类别标签
#     autopct='%1.1f%%',         # 显示百分比（保留1位小数）
#     shadow=True,               # 阴影效果
#     startangle=90,             # 起始角度（90度为从正上方开始）
#     colors=['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc', '#c2c2f0'],  # 自定义颜色
#     textprops={'fontsize': 12},  # 标签文字大小
#     pctdistance=0.85,          # 百分比文字距离圆心的距离（0-1）
#     wedgeprops={'edgecolor': 'white', 'linewidth': 2}  # 扇区边框
# )
#
# # 4. 美化文本
# plt.setp(autotexts, size=10, weight='bold', color='white')  # 百分比文字样式
# plt.title('班级成绩等级分布', fontsize=15)  # 标题
#
# # 5. 保证饼图为正圆形
# plt.axis('equal')
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()

# import matplotlib.pyplot as plt
#
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False
#
# months = ["1月", "2月", "3月", "4月", "5月", "6月",
#           "7月", "8月", "9月", "10月", "11月", "12月"]
# sales = [8, 12, 10, 9, 11, 15, 18, 16, 13, 14, 17, 20]
#
# plt.figure(figsize=(10, 6))
#
# plt.plot(months, sales, color='red', marker='o', linestyle='-', linewidth=2, markersize=5)
#
# for x, y in zip(months, sales):
#     plt.text(x, y + 0.5, f'{y}', ha='center', fontsize=10)
#
# plt.title("2024 年奶茶店月度销售额趋势图", fontsize=15, pad=20)
# plt.xlabel("月份", fontsize=12, labelpad=10)
# plt.ylabel("销售额（万元）", fontsize=12, labelpad=10)
#
# plt.tight_layout()
# plt.show()
# import numpy as np
# import matplotlib.pyplot as plt
#
# # 同时设置中文字体和负号显示
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC", "Arial Unicode MS"]
# plt.rcParams['axes.unicode_minus'] = False
#
# np.random.seed(42)
# x = np.random.randn(200)
# y = 2 * x + np.random.randn(200) * 0.5
# sizes = np.random.randint(10, 100, 200)
# colors = np.random.rand(200)
#
# plt.figure(figsize=(10, 6), dpi=100)
#
# scatter = plt.scatter(
#     x, y,
#     s=sizes,
#     c=colors,
#     alpha=0.7,
#     marker='o',
#     cmap='viridis',
#     edgecolors='black',
#     linewidths=0.5
# )
#
# plt.title('变量X与Y的散点图', fontsize=15)
# plt.xlabel('X值', fontsize=12)
# plt.ylabel('Y值', fontsize=12)
# plt.grid(True, linestyle=':', alpha=0.5)
# plt.colorbar(scatter, label='颜色强度')
#
# plt.tight_layout()
# plt.show()
# import numpy as np
# import matplotlib.pyplot as plt
#
# # 设置中文显示
# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 定义数据
# x = np.array([89, 129, 169, 199, 229, 269, 299, 329, 369, 399])
# y = np.array([1200, 950, 800, 720, 600, 550, 480, 400, 300, 250])
#
# # 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 绘制散点图
# plt.scatter(x, y, color='blue', marker='o', label='数据点')
#
# # 添加趋势线（使用numpy的polyfit拟合一次函数）
# z = np.polyfit(x, y, 1)
# p = np.poly1d(z)
# plt.plot(x, p(x), color='red', linestyle='--', label='趋势线')
#
# # 添加标题和坐标轴标签
# plt.title('连衣裙单价与月销量关系散点图', fontsize=15)
# plt.xlabel('单价（元）', fontsize=12)
# plt.ylabel('月销量（件）', fontsize=12)
#
# # 显示网格
# plt.grid(True, linestyle=':', alpha=0.5)
#
# # 显示图例
# plt.legend()
#
# # 调整布局并显示
# plt.tight_layout()
# plt.show()
#
# # 分析相关性
# corr = np.corrcoef(x, y)[0, 1]
# print(f"相关系数：{corr:.2f}")

# import matplotlib.pyplot as plt
#
#
# departments = ['技术部', '市场部', '运营部', '行政部', '财务部']
# budgets = [350, 250, 200, 120, 80]
# total = 1000
# percentages = [budget / total * 100 for budget in budgets]
# colors = ['#ff6347', '#6495ed', '#90ee90', '#f0e68c', '#d8bfd8']
#
#
# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
#
#
# plt.figure(figsize=(10, 10), dpi=100)
#
# wedges, texts, autotexts = plt.pie(
#     percentages,
#     labels=departments,
#     colors=colors,
#     autopct=lambda p: f'{int(p * total / 100)}万\n{p:.1f}%',
#     startangle=90,
#     pctdistance=0.85,
#     wedgeprops=dict(width=0.3, edgecolor='white')
# )
#
#
# centre_circle = plt.Circle((0, 0), 0.70, fc='white')
# fig = plt.gcf()
# fig.gca().add_artist(centre_circle)
# fig.gca().text(0, 0, f'总预算\n{total}万', ha='center', va='center', fontsize=12)
#
# plt.title('2024年公司各部门预算占比环形图', fontsize=18)
# plt.axis('equal')
#
#
# plt.tight_layout()
# plt.show()
# import numpy as np
# import matplotlib.pyplot as plt
#
# # 1. 准备数据
# np.random.seed(42)
# data = np.random.randn(1000)  # 1000个符合标准正态分布的数据
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制直方图
# n, bins, patches = plt.hist(
#     data,
#     bins=30,
#     density=True,
#     color='skyblue',
#     alpha=0.7,
#     edgecolor='black',
#     linewidth=0.5
# )
#
#
# mu, sigma = np.mean(data), np.std(data)
# plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
#          np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
#          linewidth=2, color='red', label='正态分布曲线')
#
#
# plt.title('正态分布数据直方图', fontsize=15)
# plt.xlabel('数据值', fontsize=12)
# plt.ylabel('频率密度', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)
# plt.legend()
#
# plt.tight_layout()
# plt.show()
# import matplotlib.pyplot as plt
#
# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题
#
# # 数据准备
# score_intervals = ['80-90', '90-100', '100-110', '110-120', '120-130', '130-140', '140-150']
# num_students = [5, 8, 12, 10, 8, 5, 2]
#
# # 绘制直方图
# plt.bar(score_intervals, num_students, color='orange', width=1, edgecolor='black')
# plt.xlabel('成绩区间')
# plt.ylabel('人数')
# plt.title('高一年级数学成绩分布直方图')
# plt.show()
#
# # 分布形态与最集中区间分析
# max_num = max(num_students)
# most_concentrated_interval = score_intervals[num_students.index(max_num)]
# print(f"成绩分布近似正态分布，最集中的区间是{most_concentrated_interval}分，人数为{max_num}人。")
# import numpy as np
# import matplotlib.pyplot as plt
#
# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题
#
# # 1. 准备数据（多组对比示例）
# categories = ['一月', '二月', '三月', '四月', '五月']  # 类别
# data1 = [20, 35, 30, 35, 27]  ）
# data2 = [25, 32, 34, 20, 25]
# x = np.arange(len(categories))
# width = 0.35
#
#
# plt.figure(figsize=(10, 6), dpi=100)
#
#
# rects1 = plt.bar(
#     x - width/2,
#     data1,
#     width,
#     label='A产品',
#     color='skyblue',
#     edgecolor='black'
# )
# rects2 = plt.bar(
#     x + width/2,
#     data2,
#     width,
#     label='B产品',
#     color='orange',
#     edgecolor='black'
# )
#
#
# def add_labels(rects):
#     for rect in rects:
#         height = rect.get_height()
#         plt.text(
#             rect.get_x() + rect.get_width()/2, height + 0.5,
#             f'{height}', ha='center', va='bottom', fontsize=10
#         )
# add_labels(rects1)
# add_labels(rects2)
#
# # 5. 设置属性
# plt.title('A、B产品月度销量对比', fontsize=15)
# plt.xlabel('月份', fontsize=12)
# plt.ylabel('销量（件）', fontsize=12)
# plt.xticks(x, categories)
# plt.ylim(0, 40)
# plt.grid(axis='y', linestyle=':', alpha=0.7)
# plt.legend()
#
# plt.show()
# import numpy as np
# import matplotlib.pyplot as plt
#
#
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False
#
#
# stores = ['门店A', '门店B', '门店C', '门店D']
# months = ['4月', '5月', '6月']
#
# turnover = {
#     '4月': [20, 18, 22, 15],   # 对应门店A、B、C、D的4月营业额
#     '5月': [25, 20, 23, 18],   # 对应门店A、B、C、D的5月营业额
#     '6月': [22, 21, 25, 20]    # 对应门店A、B、C、D的6月营业额
# }
# x = np.arange(len(stores))  # 4个门店，x长度为4
# width = 0.25
#
# # 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 绘制分组柱状图（每个月份对应一组柱子，分别偏移x轴位置）
# rects4 = plt.bar(x - width, turnover['4月'], width, label='4月', color='skyblue', edgecolor='black')
# rects5 = plt.bar(x, turnover['5月'], width, label='5月', color='orange', edgecolor='black')
# rects6 = plt.bar(x + width, turnover['6月'], width, label='6月', color='green', edgecolor='black')
#
# # 添加数据标签
# def add_labels(rects):
#     for rect in rects:
#         height = rect.get_height()
#         plt.text(rect.get_x() + rect.get_width()/2, height + 0.5,
#                  f'{height}', ha='center', va='bottom', fontsize=10)
# add_labels(rects4)
# add_labels(rects5)
# add_labels(rects6)
#
# # 设置属性
# plt.title('超市各门店第二季度营业额柱状图', fontsize=15)
# plt.xlabel('门店', fontsize=12)
# plt.ylabel('营业额（万元）', fontsize=12)
# plt.xticks(x, stores)
# plt.legend()
# plt.grid(axis='y', linestyle=':', alpha=0.7)
#
# plt.show()
#
# # 分析结果
# print("各门店营业额差异：门店C整体营业额最高，门店D相对较低；")
# print("各门店季度内变化：门店A、B、C、D均呈现先增长后小幅调整或持续增长的趋势，其中门店C增长最为明显。")
# import numpy as np
# import matplotlib.pyplot as plt
# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题
#
# # 1. 准备数据
# labels = ['攻击力', '防御力', '速度', '血量', '暴击率']  # 维度标签
# n = len(labels)  # 维度数量
#
# # 两个样本数据（如两个游戏角色的属性）
# data1 = [90, 60, 80, 70, 95]
# data2 = [70, 85, 65, 90, 60]
#
# # 计算每个维度的角度（极坐标）
# angles = np.linspace(0, 2*np.pi, n, endpoint=False).tolist()
# # 闭合雷达图（首尾相连）
# data1 = data1 + [data1[0]]
# data2 = data2 + [data2[0]]
# angles = angles + [angles[0]]
# labels = labels + [labels[0]]
#
# # 2. 创建画布（极坐标）
# plt.figure(figsize=(8, 8), dpi=100)
# ax = plt.subplot(111, polar=True)  # 设置为极坐标
#
# # 3. 绘制雷达图
# ax.plot(angles, data1, 'o-', linewidth=2, label='角色A')  # 角色A
# ax.fill(angles, data1, alpha=0.25)  # 填充颜色
# ax.plot(angles, data2, 's-', linewidth=2, label='角色B')  # 角色B
# ax.fill(angles, data2, alpha=0.25)
#
# # 4. 设置属性
# ax.set_thetagrids(np.degrees(angles), labels)  # 设置角度标签
# ax.set_ylim(0, 100)  # 设置数据范围
# ax.set_title('游戏角色属性对比', fontsize=15, pad=20)  # pad控制标题距离
# ax.grid(True)  # 显示网格
# plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))  # 图例位置
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()
# import numpy as np
# import matplotlib.pyplot as plt
#
# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题
#
# # 1. 准备数据
# labels = ['拍照', '性能', '续航', '外观', '价格']  # 维度标签
# n = len(labels)  # 维度数量
#
# # 两款手机的评分数据
# xiaomi = [8.5, 9.2, 7.8, 8.0, 7.5]
# huawei = [7.8, 8.5, 8.2, 8.5, 8.0]
#
# # 计算每个维度的角度（极坐标）
# angles = np.linspace(0, 2*np.pi, n, endpoint=False).tolist()
# # 闭合雷达图（首尾相连）
# xiaomi = xiaomi + [xiaomi[0]]
# huawei = huawei + [huawei[0]]
# angles = angles + [angles[0]]
# labels = labels + [labels[0]]
#
# # 2. 创建画布（极坐标）
# plt.figure(figsize=(8, 8), dpi=100)
# ax = plt.subplot(111, polar=True)  # 设置为极坐标
#
# # 3. 绘制雷达图
# ax.plot(angles, xiaomi, 'o-', linewidth=2, label='小米手机', color='orange')  # 小米手机
# ax.fill(angles, xiaomi, alpha=0.25, color='orange')  # 填充颜色
# ax.plot(angles, huawei, 's-', linewidth=2, label='华为手机', color='skyblue')  # 华为手机
# ax.fill(angles, huawei, alpha=0.25, color='skyblue')
#
# # 4. 设置属性
# ax.set_thetagrids(np.degrees(angles), labels)  # 设置角度标签
# ax.set_ylim(0, 10)  # 设置评分范围（满分10分）
# ax.set_title('两款手机各维度评分雷达图', fontsize=15, pad=20)  # pad控制标题距离
# ax.grid(True)  # 显示网格
# plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))  # 图例位置
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()
#
# # 分析结果
# print("维度优势对比：")
# print("小米手机在性能（9.2）维度优势明显；华为手机在续航（8.2）、外观（8.5）、价格（8.0）维度更优，拍照（7.8）略逊于小米。")
# print("综合表现：两款手机各有侧重，若注重性能选小米，若看重续航、外观和价格选华为。")
# import numpy as np
# import matplotlib.pyplot as plt
#
# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题
#
# # 1. 准备数据（多组数据对比）
# np.random.seed(42)
# data = [
#     np.random.normal(0, 1, 100),   # 正态分布1（均值0，标准差1）
#     np.random.normal(2, 1.5, 100), # 正态分布2（均值2，标准差1.5）
#     np.random.normal(-1, 0.8, 100) # 正态分布3（均值-1，标准差0.8）
# ]
# labels = ['组A', '组B', '组C']  # 数据组标签
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# 3. 绘制箱线图
# box = plt.boxplot(
#     data,
#     labels=labels,               # 各组标签
#     notch=True,                  # 是否显示中位数缺口（更直观展示中位数置信区间）
#     vert=True,                   # 是否垂直显示（False为水平）
#     patch_artist=True,           # 是否填充箱体颜色
#     widths=0.6,                  # 箱体宽度
#     showfliers=True,             # 是否显示异常值
#     flierprops=dict(marker='o', color='red', alpha=0.5), # 异常值样式
#     medianprops=dict(color='green', linewidth=2),        # 中位数线样式
#     boxprops=dict(facecolor='skyblue', edgecolor='black'),# 箱体样式
#     capprops=dict(color='black'), # 箱线顶部/底部横线样式
#     whiskerprops=dict(color='black') # whisker线（箱线到最值的线）样式
# )
#
# # 4. 设置属性
# plt.title('三组数据分布对比（箱线图）', fontsize=15)
# plt.ylabel('数据值', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()
# import matplotlib.pyplot as plt
#
# # 1. 准备数据（基于题目中三科的分位数、异常值构造数据）
# 语文 = [90] + [100]*7 + [110]*15 + [120]*7 + [135]
# 数学 = [85] + [95]*7 + [115]*15 + [125]*6 + [145]  # 包含异常值145
# 英语 = [80] + [90]*7 + [105]*15 + [115]*7 + [130]
# data = [语文, 数学, 英语]
# labels = ['语文', '数学', '英语']
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制箱线图
# box = plt.boxplot(
#     data,
#     labels=labels,               # 各组标签
#     notch=True,                  # 显示中位数缺口
#     vert=True,                   # 垂直显示
#     patch_artist=True,           # 允许填充箱体颜色
#     widths=0.6,                  # 箱体宽度
#     showfliers=True,             # 显示异常值
#     flierprops=dict(marker='o', color='red', alpha=0.5), # 数学异常值（145）样式
#     medianprops=dict(color='green', linewidth=2),        # 中位数线样式
#     boxprops=dict(facecolor='skyblue', edgecolor='black'),# 箱体样式
#     capprops=dict(color='black'), # 箱线顶部/底部横线样式
#     whiskerprops=dict(color='black') # whisker线样式
# )
#
# # 4. 设置属性
# plt.title('语文、数学、英语成绩箱线图', fontsize=15)
# plt.ylabel('成绩（满分150）', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()
# import matplotlib.pyplot as plt
#
# # 解决中文显示乱码问题（适配Windows/macOS/Linux）
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'DejaVu Sans']  # 优先使用系统中文字体
# plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示异常
#
# 语文 = [90] + [100]*7 + [110]*15 + [120]*7 + [135]
# 数学 = [85] + [95]*7 + [115]*15 + [125]*6 + [145]  # 包含异常值145
# 英语 = [80] + [90]*7 + [105]*15 + [115]*7 + [130]
# data = [语文, 数学, 英语]
# labels = ['语文', '数学', '英语']
#
#
# plt.figure(figsize=(10, 6), dpi=100)
#
#
# box = plt.boxplot(
#     data,
#     labels=labels,
#     notch=True,
#     vert=True,
#     patch_artist=True,
#     widths=0.6,
#     showfliers=True,
#     flierprops=dict(marker='o', color='red', alpha=0.5),
#     medianprops=dict(color='green', linewidth=2),
#     boxprops=dict(facecolor='skyblue', edgecolor='black'),
#     capprops=dict(color='black'),
#     whiskerprops=dict(color='black')
# )
#
# # 4. 设置属性
# plt.title('语文、数学、英语成绩箱线图', fontsize=15)
# plt.ylabel('成绩（满分150）', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)
#
# # 5. 显示图表
# plt.tight_layout()
